package com.boot2.core;

import com.boot2.core.web.RequestContext;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;

/**
 * @author zhangweilin
 * @ClassName: jpaPageRequest
 * @description: 扩展的分页对象
 * @date 2017年12月18日 下午4:15:23
 */
public class JpaPageRequest {


    /**
     * 默认分页，页码请传 pageNo,如pageNo=1,每页多少条，请传pageSize,如pageSize=30
     */
    public static PageRequest of() {
//        super(RequestContext.getPageInfo().getPageNo() - 1, RequestContext.getPageInfo().getPageSize());  //  for spring boot 2.0
//		PageHelper.startPage(RequestContext.getPageInfo().getPageNo(), RequestContext.getPageInfo().getPageSize());
        return PageRequest.of(RequestContext.getPageInfo().getPageNo() - 1, RequestContext.getPageInfo().getPageSize());  //for spring boot 2.2
    }

    public static PageRequest of(int pageNo) {
//        super(pageNo - 1, RequestContext.getPageInfo().getPageSize());
//		PageHelper.startPage(pageNo, size <= 0 ? RequestContext.getPageInfo().getPageSize() : size);
        return PageRequest.of(pageNo - 1, RequestContext.getPageInfo().getPageSize());
    }

    public static PageRequest of(int pageNo, int size) {
//        super(pageNo - 1, size <= 0 ? RequestContext.getPageInfo().getPageSize() : size);
//		PageHelper.startPage(pageNo, size <= 0 ? RequestContext.getPageInfo().getPageSize() : size);
        return PageRequest.of(pageNo - 1, size <= 0 ? RequestContext.getPageInfo().getPageSize() : size);
    }

    /**
     * 页码请传 pageNo,如pageNo=1,每页多少条，请传pageSize,如pageSize=30
     */
    public static PageRequest of(Direction direction, String... properties) {
//        super(RequestContext.getPageInfo().getPageNo() - 1, RequestContext.getPageInfo().getPageSize(), direction,
//                properties);
//		PageHelper.startPage(RequestContext.getPageInfo().getPageNo(),  RequestContext.getPageInfo().getPageSize());
        return PageRequest.of(RequestContext.getPageInfo().getPageNo() - 1, RequestContext.getPageInfo().getPageSize(), direction,
                properties);
    }

    public static PageRequest of(int pageNo, int pageSize, Direction direction, String... properties) {
//        super(pageNo - 1, pageSize <= 0 ? RequestContext.getPageInfo().getPageSize() : pageSize, direction, properties);
//		PageHelper.startPage(page,  RequestContext.getPageInfo().getPageSize());
        return PageRequest.of(pageNo - 1, pageSize <= 0 ? RequestContext.getPageInfo().getPageSize() : pageSize, direction, properties);
    }

    /**
     * 页码请传 pageNo,如pageNo=1,每页多少条，请传pageSize,如pageSize=30
     */
    public static PageRequest of(Sort sort) {
//        super(RequestContext.getPageInfo().getPageNo() - 1, RequestContext.getPageInfo().getPageSize(), sort);
//		PageHelper.startPage(RequestContext.getPageInfo().getPageNo(),  RequestContext.getPageInfo().getPageSize());
        return PageRequest.of(RequestContext.getPageInfo().getPageNo() - 1, RequestContext.getPageInfo().getPageSize(), sort);
    }

    public static PageRequest of(int pageNo, int pageSize, Sort sort) {
//        super(pageNo - 1, pageSize <= 0 ? RequestContext.getPageInfo().getPageSize() : pageSize, sort);
//		PageHelper.startPage(page,  size <= 0 ? RequestContext.getPageInfo().getPageSize() : size);
        return PageRequest.of(pageNo - 1, pageSize <= 0 ? RequestContext.getPageInfo().getPageSize() : pageSize, sort);
    }
}
